/******************************************************************************
 * @File name   :      IMaintainCarPlateService.java
 *
 * @Author      :      ANMA
 *
 * @Date        :      Jul 28, 2015
 *
 * @Copyright Notice: 
 * Copyright (c) 2014 DMS, Inc. All  Rights Reserved.
 * This software is published under the terms of the DMS Software
 * License version 1.0, a copy of which has been included with this
 * distribution in the LICENSE.txt file.
 * 
 * ----------------------------------------------------------------------------
 * Date                         Who         Version         Comments
 * Jul 28, 2015 2:08:37 PM    ANMA      1.0            Initial Version
 *****************************************************************************/
package com.cap.bts.crmdp.dealer.mars.service;

import java.util.List;

import com.cap.bts.crmdp.dealer.member.domain.CarPlateInfo;
import com.cap.bts.crmdp.dealer.member.dto.MemberResultsDto;
import com.cap.bts.framework.common.exception.AppException;
import com.cap.bts.framework.common.service.IBaseService;

/**
 * 
 */
public interface IMarsMaintainCarPlateService extends IBaseService {

    /**
     * @Date : 2015-7-20
     * @param dto
     * @return List<CarPlateInfo>
     */
    public List<CarPlateInfo> getCarPlateInfoListByCarPlateOrMemberId(String carPlate, Long memberId)
        throws AppException;

    /**
     * @Date : 2015-7-20
     * @param dto
     * @return CarPlateInfo
     */
    public CarPlateInfo saveCarPlateInfo(MemberResultsDto dto) throws AppException;

    /**
     * @Date : 2015年8月6日
     * @param id
     * @return
     * @throws AppException
     */
    public boolean removeCarPlateInfo(Long id) throws AppException;

    /**
     * @Date : 2015年8月12日
     * @param id
     * @return
     * @throws AppException
     */
    public boolean existUsingPackage(Long id) throws AppException;

    /**
     * @Date : 2015年8月17日
     * @param carPlate
     * @param memberId
     * @return
     * @throws AppException
     */
    public List<CarPlateInfo> getCarPlateInfoListByCarPlateAndMemberId(String carPlate,
        Long memberId) throws AppException;

    /**
     * @Date : 2015年8月25日
     * @param dealerId
     * @param carPlate
     * @param memberId
     * @return
     * @throws AppException
     */
    public CarPlateInfo getCarPlateListWithPackage(Long dealerId, Long carPlateId, Long memberId)
        throws AppException;

    /**
     * @Date : 2015年9月6日
     * @param carPlateInfo
     * @throws AppException
     */
    public void updateCarPlateByCarPlateInfo(CarPlateInfo carPlateInfo, Long newMemberId)
        throws AppException;

    /**
     * @Date : 2015年9月6日
     * @param id
     * @param carPlate
     * @param updateTimes
     * @throws AppException
     */
    public boolean updateCarPlateForMember(MemberResultsDto memberResultsDto, int updateTimes)
        throws AppException;

    /**
     * @Date : 2015年9月6日
     * @param id
     * @return
     * @throws AppException
     */
    public CarPlateInfo getCarPlateInfoById(Long id) throws AppException;

    /**
     * @Date : 2015年9月28日
     * @param carPlateInfo
     * @param newMemberId
     * @throws AppException
     */
    public void updateCarPlate(CarPlateInfo carPlateInfo) throws AppException;

    /**
     * @Date : 2015年10月15日
     * @param carPlate
     * @return
     * @throws AppException
     */
    public List<CarPlateInfo> getCarPlateInfoListByCarPlate(String carPlate) throws AppException;

    public CarPlateInfo getCarPlateInfoByMarsCarId(String carId);
    
    public CarPlateInfo getCarPlateInfoByMarsCarIdAndMemberId(String carId, Long memberId);
}
